package com.yjq.programmer.service;

import com.yjq.programmer.dto.MusicMenuDTO;
import com.yjq.programmer.dto.MusicMenuItemDTO;
import com.yjq.programmer.dto.PageDTO;
import com.yjq.programmer.dto.ResponseDTO;

import java.util.List;

/**
 * @author 杨杨吖
 * @QQ 823208782
 * @WX yjqi12345678
 * @create 2022-11-21 16:20
 */
public interface IMusicMenuService {

    // 分页获取歌单数据
    ResponseDTO<PageDTO<MusicMenuDTO>> getMusicMenuListByPage(PageDTO<MusicMenuDTO> pageDTO);

    // 保存歌单数据(添加、修改)
    ResponseDTO<Boolean> saveMusicMenu(MusicMenuDTO musicMenuDTO);

    // 删除歌单数据
    ResponseDTO<Boolean> removeMusicMenu(MusicMenuDTO musicMenuDTO);

    // 小程序保存歌单数据(添加、修改)
    ResponseDTO<Boolean> appSaveMusicMenu(MusicMenuDTO musicMenuDTO);

    // 根据用户id获取歌单数据
    ResponseDTO<List<MusicMenuDTO>> getMusicMenuListByUserId(MusicMenuDTO musicMenuDTO);

    // 添加音乐到歌单
    ResponseDTO<Boolean> addMusicMenu(MusicMenuItemDTO musicMenuItemDTO);

    // 搜索歌单数据
    ResponseDTO<List<MusicMenuDTO>> searchMusicMenu(MusicMenuDTO musicMenuDTO);

    // 歌单浏览量增加
    ResponseDTO<Boolean> addMusicMenuView(MusicMenuDTO musicMenuDTO);

    // 根据是否官方歌单筛选数据
    ResponseDTO<List<MusicMenuDTO>> getMusicMenuByIsOfficial(MusicMenuDTO musicMenuDTO);

    // 根据id获取歌单数据
    ResponseDTO<MusicMenuDTO> getMusicMenuById(MusicMenuDTO musicMenuDTO);

    // 获取热门歌单数据
    ResponseDTO<List<MusicMenuDTO>> getHotMusicMenuList(PageDTO<MusicMenuDTO> pageDTO);

    // 获取歌单总数
    ResponseDTO<Integer> getMusicMenuTotal();

    // 删除歌单详情数据
    ResponseDTO<Boolean> removeMusicMenuItem(MusicMenuItemDTO musicMenuItemDTO);

    // 判断歌单是否是当前登录用户的
    ResponseDTO<Boolean> getIsMySelfMusicMenu(MusicMenuDTO musicMenuDTO);
}
